package cn.remex.wechat.utils;

import cn.remex.RemexConstants;
import cn.remex.core.exception.ServiceCode;
import cn.remex.core.util.Assert;
import org.apache.commons.codec.digest.DigestUtils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

/**
 * Created by guoqi on 2016/2/27.
 */
public class SHA1 {
	/*
	 * 串接arr参数，生成sha1 digest
	 *
	 */
	public static String gen(String... arr) {
		Arrays.sort(arr);
		StringBuilder sb = new StringBuilder();
		for (String a : arr) {
			sb.append(a);
		}
		return DigestUtils.shaHex(sb.toString());
	}

	public static String SHA1(String str) {
		try {
			MessageDigest digest = java.security.MessageDigest
					.getInstance("SHA-1"); //如果是SHA加密只需要将"SHA-1"改成"SHA"即可
			digest.update(str.getBytes());
			byte messageDigest[] = digest.digest();
			// Create Hex String
			StringBuffer hexStr = new StringBuffer();
			// 字节数组转换为 十六进制 数
			for (int i = 0; i < messageDigest.length; i++) {
				String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
				if (shaHex.length() < 2) {
					hexStr.append(0);
				}
				hexStr.append(shaHex);
			}
			return hexStr.toString();

		} catch (NoSuchAlgorithmException e) {
			Assert.isTrue(false, ServiceCode.ERROR,"SHA 签名失败");
		}
		return null;
	}
}
